package com.cyt.gen.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.gen.model.vo.FormTableFieldVo;
import com.cyt.gen.model.vo.FormTableVo;
import com.cyt.sys.model.po.SysUser;

import java.util.List;

/**
 * @author rong yuan
 * @date 2019/4/12 15:01
 */
public interface FormTableService {

    /**
     * 分页查询表信息
     *
     * @param formTableVo 传入参数对象
     * @param pageSize    页面数量
     * @param pageNum     当前页面
     * @return ReturnResult
     * @author rong yuan
     * @date 2019/4/12 15:04
     */
    ReturnResult pageTable(FormTableVo formTableVo, int pageSize, int pageNum);

    /**
     * list查询表信息
     *
     * @param formTableVo 传入参数对象
     * @return List<FormTableVo>
     * @author rong yuan
     * @date 2019/4/12 15:04
     */
    List<FormTableVo> listTable(FormTableVo formTableVo);

    /**
     * 根据表名称获取表信息
     *
     * @param formTableVo 传入参数对象
     * @return FormTableVo
     * @author rong yuan
     * @date 2019/4/12 16:48
     */
    FormTableVo selectTableByTableName(FormTableVo formTableVo);

    /**
     * list查询表字段信息
     *
     * @param formTableVo 传入参数对象
     * @return List<FormTableFieldVo>
     * @author rong yuan
     * @date 2019/4/12 16:48
     */
    List<FormTableFieldVo> listTableField(FormTableVo formTableVo);

    /**
     * 新建数据库表
     *
     * @param formTableVo 传入参数对象
     * @return ReturnResult
     * @author rong yuan
     * @date 2019/4/15 10:39
     */
    ReturnResult createTable(FormTableVo formTableVo);

    /**
     * 保存表单设置
     *
     * @param formTableVo 传入参数对象
     * @param sysUser     用户信息
     * @return ReturnResult
     * @author rong yuan
     * @date 2019/4/16 16:46
     */
    ReturnResult saveOrUpdate(FormTableVo formTableVo, SysUser sysUser);

    /**
     * 表格界面预览获取数据
     *
     * @param formTableVo 传入参数对象
     * @return FormTableVo
     * @author rong yuan
     * @date 2019/4/19 13:50
     */
    FormTableVo selectForPreviewList(FormTableVo formTableVo);

    /**
     * 表单界面预览获取数据
     *
     * @param formTableVo 传入参数对象
     * @return FormTableVo
     * @author rong yuan
     * @date 2019/4/19 13:50
     */
    FormTableVo selectForPreviewEdit(FormTableVo formTableVo);
}
